package com.hck.infrastructure.persistent.dao;

import com.hck.infrastructure.persistent.po.HealthAlert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 健康預警表數據訪問接口
 */
@Mapper
public interface IHealthAlertDao {
    /**
     * 插入健康預警
     */
    void insert(HealthAlert healthAlert);

    /**
     * 根據ID查詢健康預警
     */
    HealthAlert selectById(Long id);

    /**
     * 根據用戶ID查詢健康預警
     */
    List<HealthAlert> selectByUserId(Long userId);

    /**
     * 根據用戶ID查詢未讀健康預警
     */
    List<HealthAlert> selectUnreadByUserId(Long userId);

    /**
     * 根據用戶ID和預警類型查詢健康預警
     */
    List<HealthAlert> selectByUserIdAndType(@Param("userId") Long userId, @Param("alertType") String alertType);

    /**
     * 根據預警等級查詢健康預警
     */
    List<HealthAlert> selectByAlertLevel(@Param("userId") Long userId, @Param("alertLevel") String alertLevel);

    /**
     * 標記預警為已讀
     */
    void markAsRead(Long id);

    /**
     * 標記預警為已處理
     */
    void markAsHandled(@Param("id") Long id, @Param("handleTime") Date handleTime);

    /**
     * 更新健康預警
     */
    void update(HealthAlert healthAlert);

    /**
     * 刪除健康預警
     */
    void deleteById(Long id);

} 